package cn.zhouchao.tran;

import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.TransactionMQProducer;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

public class TranProducer {
    public static void main(String[] args) throws Exception {
        // 1.创建mq的生产者对象
        TransactionMQProducer producer = new TransactionMQProducer("tran_producer_group"); // 对之前的修改一下就是
        // 2.设置NameServer的地址
        producer.setNamesrvAddr("localhost:9876");
        // 设置事务监听器
        TranListener tranListener = new TranListener();
        producer.setTransactionListener(tranListener);
        // 3.启动Producer实例
        producer.start();

        // 4.创建消息，并指定Topic，Tag和消息体
        Message msg = new Message("tran_topic" /* Topic */,
                "tran_tag" /* Tag */,
                "你好啊，你好啊，事务消息！".getBytes(StandardCharsets.UTF_8)
        );
        // 5.发送同步消息到一个Broker
        SendResult sendResult = producer.sendMessageInTransaction(msg, "执行本地事务所需参数！！！！");
        // 6.通过sendResult返回消息是否成功送达
        System.out.printf("%s%n", sendResult); // 这里打印语句不同 "printf" 的 "f"

        // 7.如果不再发送消息，关闭Producer实例。
         producer.shutdown();
    }
}
